Skip to content

Conversation

@judovana
Copy link
Contributor

@judovana judovana commented Oct 28, 2025

Hi!

I had recently hit an issue with jdk8, which, if build on old system - eg el7, it can not run GUI application on newest system like f42 or similar:

java.lang.UnsatisfiedLinkError: /usr/lib/jvm/java-1.8.0-openjdk-jdk8u462.b05-0.ojdk8~u~upstream.hotspot.release.sdk.el7.x86_64.tarxz/jre/lib/amd64/libfontmanager.so: /lib64/libharfbuzz.so.0: undefined symbol: FT_Get_Color_Glyph_Layer
	at java.lang.ClassLoader$NativeLibrary.load(Native Method)
	at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1934)
	at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1838)
	at java.lang.Runtime.loadLibrary0(Runtime.java:843)
	at java.lang.System.loadLibrary(System.java:1136)
	at sun.font.FontManagerNativeLibrary$1.run(FontManagerNativeLibrary.java:61)
	at java.security.AccessController.doPrivileged(Native Method)
	at sun.font.FontManagerNativeLibrary.<clinit>(FontManagerNativeLibrary.java:32)
	at sun.java2d.xr.XRSurfaceData.initXRSurfaceData(XRSurfaceData.java:85)
	at sun.awt.X11GraphicsEnvironment$1.run(X11GraphicsEnvironment.java:137)
	at java.security.AccessController.doPrivileged(Native Method)
	at sun.awt.X11GraphicsEnvironment.<clinit>(X11GraphicsEnvironment.java:74)

As per investigations the issue is in duality of freetype, and is solved by 8193017: Import freetype sources into OpenJDK source tree

This is fully based on unfinished #318 , with smal lexception of rebase, and docs adaptation. The change in doc/building.html is unluckily done manually, as make update-build-docs is regenerating half of the universum. Is it desired? Is there some recomended version of pandoc to use?

 pandoc --version
pandoc 3.1.11.1
Features: +server +lua
Scripting engine: Lua 5.4

I had tested builds on windows and several linuxes, run full jtregs and checked the GUI works again. I can link full set of tests if needed (actually many of them are still running).

For record, I built by temurin build wrapper, which needed an change to adapt to this: adoptium/temurin-build#4287


Progress

  • Change must be properly reviewed (1 review required, with at least 1 Reviewer)
  • Change must not contain extraneous whitespace
  • Commit message must refer to an issue
  • JDK-8193017 needs maintainer approval

Issue

  • JDK-8193017: Import freetype sources into OpenJDK source tree (Bug - P3 - Requested)

Reviewing

Using git

Checkout this PR locally:
$ git fetch https://git.openjdk.org/jdk8u-dev.git pull/709/head:pull/709
$ git checkout pull/709

Update a local copy of the PR:
$ git checkout pull/709
$ git pull https://git.openjdk.org/jdk8u-dev.git pull/709/head

Using Skara CLI tools

Checkout this PR locally:
$ git pr checkout 709

View PR using the GUI difftool:
$ git pr show -t 709

Using diff file

Download this PR as a diff file:
https://git.openjdk.org/jdk8u-dev/pull/709.diff

Using Webrev

Link to Webrev Comment

@bridgekeeper
Copy link

bridgekeeper bot commented Oct 28, 2025

👋 Welcome back jvanek! A progress list of the required criteria for merging this PR into master will be added to the body of your pull request. There are additional pull request commands available for use with this pull request.

@openjdk
Copy link

openjdk bot commented Oct 28, 2025

❗ This change is not yet ready to be integrated.
See the Progress checklist in the description for automated requirements.

@openjdk
Copy link

openjdk bot commented Oct 28, 2025

@judovana Please do not rebase or force-push to an active PR as it invalidates existing review comments. Note for future reference, the bots always squash all changes into a single commit automatically as part of the integration. See OpenJDK Developers’ Guide for more information.

@judovana judovana changed the title 8193017: Import freetype sources into OpenJDK source tree Backport 58ff4ee8c4ec399528338b59eadea996110366a0 Oct 28, 2025
@openjdk openjdk bot changed the title Backport 58ff4ee8c4ec399528338b59eadea996110366a0 8193017: Import freetype sources into OpenJDK source tree Oct 28, 2025
@openjdk
Copy link

openjdk bot commented Oct 28, 2025

This backport pull request has now been updated with issue from the original commit.

@openjdk openjdk bot added the backport Port of a pull request already in a different code base label Oct 28, 2025
@openjdk
Copy link

openjdk bot commented Oct 28, 2025

⚠️ @judovana This backport pull request is too large to be automatically evaluated as clean.

@mlbridge
Copy link

mlbridge bot commented Oct 28, 2025

Webrevs

@judovana
Copy link
Contributor Author

Good. The builds passed. I somehow do not see the issue in the tier1. I had run them on many OSes and many platforms, and all looks good.

intel:

jtreg~tier1-jp8-ojdk8~u~upstream-el7.x86_64-hotspot.release.sdk-el7z.x86_64.vagrant-x11.defaultgc.legacy.lnxagent.jfroff  151/jdk8u472.b06-10.freetype1.ojdk8~u~upstream/SUCCESS/1 day 21 hr ago ; 
jtreg~tier1-jp8-ojdk8~u~upstream-el7.x86_64-hotspot.release.sdk-f42.x86_64.vagrant-x11.defaultgc.legacy.lnxagent.jfron  110/jdk8u472.b06-10.freetype1.ojdk8~u~upstream/UNSTABLE/1 day 21 hr ago ; 
  -  com/sun/jdi/oom/OomDebugTest.java#OomDebugTest  unrelated ot the change
jtreg~tier1-jp8-ojdk8~u~upstream-el7.x86_64-hotspot.fastdebug.sdk-el7z.x86_64.vagrant-x11.defaultgc.legacy.lnxagent.jfroff  125/jdk8u472.b06-10.freetype1.ojdk8~u~upstream/SUCCESS/1 day 21 hr ago ; 
jtreg~tier1-jp8-ojdk8~u~upstream-el7.x86_64-hotspot.release.sdk-el8z.x86_64.vagrant-x11.defaultgc.legacy.lnxagent.jfron  123/jdk8u472.b06-10.freetype1.ojdk8~u~upstream/SUCCESS/1 day 21 hr ago ; 
jtreg~tier1-jp8-ojdk8~u~upstream-el7.x86_64-hotspot.release.sdk-f41.x86_64.vagrant-x11.defaultgc.legacy.lnxagent.jfron  105/jdk8u472.b06-10.freetype1.ojdk8~u~upstream/SUCCESS/1 day 21 hr ago ; 
jtreg~tier1-jp8-ojdk8~u~upstream-el7.x86_64-hotspot.fastdebug.sdk-el7z.x86_64.vagrant-x11.defaultgc.legacy.lnxagent.jfron  139/jdk8u472.b06-10.freetype1.ojdk8~u~upstream/SUCCESS/1 day 21 hr ago ; 
jtreg~tier1-jp8-ojdk8~u~upstream-el7.x86_64-hotspot.fastdebug.sdk-f42.x86_64.vagrant-x11.defaultgc.legacy.lnxagent.jfron  77/jdk8u472.b06-10.freetype1.ojdk8~u~upstream/SUCCESS/1 day 21 hr ago ; 
jtreg~tier1-jp8-ojdk8~u~upstream-el7.x86_64-hotspot.release.sdk-el9.x86_64.vagrant-x11.defaultgc.legacy.lnxagent.jfron  74/jdk8u472.b06-10.freetype1.ojdk8~u~upstream/SUCCESS/1 day 21 hr ago ; 
jtreg~tier1-jp8-ojdk8~u~upstream-el7.x86_64-hotspot.release.sdk-el9.x86_64.vagrant-x11.defaultgc.legacy.lnxagent.jfroff  81/jdk8u472.b06-10.freetype1.ojdk8~u~upstream/SUCCESS/1 day 21 hr ago ; 
jtreg~tier1-jp8-ojdk8~u~upstream-el7.x86_64-hotspot.fastdebug.sdk-el9.x86_64.vagrant-x11.defaultgc.legacy.lnxagent.jfron  74/jdk8u472.b06-10.freetype1.ojdk8~u~upstream/SUCCESS/1 day 21 hr ago ; 
jtreg~tier1-jp8-ojdk8~u~upstream-el7.x86_64-hotspot.fastdebug.sdk-f42.x86_64.vagrant-x11.defaultgc.legacy.lnxagent.jfroff  74/jdk8u472.b06-10.freetype1.ojdk8~u~upstream/SUCCESS/1 day 21 hr ago ; 
jtreg~tier1-jp8-ojdk8~u~upstream-el7.x86_64-hotspot.release.sdk-f41.x86_64.vagrant-x11.defaultgc.legacy.lnxagent.jfroff  111/jdk8u472.b06-10.freetype1.ojdk8~u~upstream/SUCCESS/1 day 21 hr ago ; 
jtreg~tier1-jp8-ojdk8~u~upstream-el7.x86_64-hotspot.fastdebug.sdk-f41.x86_64.vagrant-x11.defaultgc.legacy.lnxagent.jfroff  73/jdk8u472.b06-10.freetype1.ojdk8~u~upstream/SUCCESS/1 day 21 hr ago ; 
jtreg~tier1-jp8-ojdk8~u~upstream-el7.x86_64-hotspot.fastdebug.sdk-el9.x86_64.vagrant-x11.defaultgc.legacy.lnxagent.jfroff  82/jdk8u472.b06-10.freetype1.ojdk8~u~upstream/SUCCESS/1 day 22 hr ago ; 
jtreg~tier1-jp8-ojdk8~u~upstream-el7.x86_64-hotspot.release.sdk-el8z.x86_64.vagrant-x11.defaultgc.legacy.lnxagent.jfroff  149/jdk8u472.b06-10.freetype1.ojdk8~u~upstream/SUCCESS/1 day 22 hr ago ; 
jtreg~tier1-jp8-ojdk8~u~upstream-el7.x86_64-hotspot.release.sdk-f42.x86_64.vagrant-x11.defaultgc.legacy.lnxagent.jfroff  121/jdk8u472.b06-10.freetype1.ojdk8~u~upstream/SUCCESS/1 day 22 hr ago ; 
jtreg~tier1-jp8-ojdk8~u~upstream-el7.x86_64-hotspot.fastdebug.sdk-el8z.x86_64.vagrant-x11.defaultgc.legacy.lnxagent.jfroff  126/jdk8u472.b06-10.freetype1.ojdk8~u~upstream/SUCCESS/1 day 22 hr ago ; 
jtreg~tier1-jp8-ojdk8~u~upstream-el7.x86_64-hotspot.release.sdk-el7z.x86_64.vagrant-x11.defaultgc.legacy.lnxagent.jfron  120/jdk8u472.b06-10.freetype1.ojdk8~u~upstream/SUCCESS/1 day 22 hr ago ; 
jtreg~tier1-jp8-ojdk8~u~upstream-el7.x86_64-hotspot.fastdebug.sdk-el8z.x86_64.vagrant-x11.defaultgc.legacy.lnxagent.jfron  123/jdk8u472.b06-10.freetype1.ojdk8~u~upstream/SUCCESS/1 day 22 hr ago ; 
jtreg~tier1-jp8-ojdk8~u~upstream-win2022.x86_64-hotspot.release.sdk-win2022.x86_64.vagrant-x11.defaultgc.legacy.lnxagent.jfroff  89/jdk8u472.b06-10.freetype1.ojdk8~u~upstream/SUCCESS/1 day 22 hr ago ; 

Noni-ntels may look wilder, but there is no new failure. And they are mostly not running GUI anyway...

@judovana
Copy link
Contributor Author

Also all the full jtregs finished on all arches x osses I have handy. The com/sun/jdi/oom/OomDebugTest.java#OomDebugTest on f42 seems to be popping up a bit more often then I would like. Will investigate more, but still looks unrelated.

@zzambers
Copy link
Contributor

zzambers commented Oct 29, 2025

Would be nice to have in-tree freetype as in later jdks

As when person is not careful bundling freetype, it can end up linking against system hafrbuzz (which, in turn, has cyclic dependency on freetype). This may, in better case, fail the build. In worst case, build may seemingly look ok, but cause runtime linking error (in description), when run on newer OS (newer than build one).

For reference, issue and workaround in temurin-build:
issue: adoptium/temurin-build#4159
workaround: adoptium/temurin-build#4238

Also --with-freetype-src on windows does not work with recent freetype versions, due to changes to vcxproj confugrations:

configure: Trying to compile freetype sources with PlatformToolset=v143 to /home/tester/temurinbuild-1756203907/workspace/libs/freetype/lib64/ ...
configure: User specified --with-freetype-src but building freetype failed. (see freetype.log for build results)
configure: error: Consider building freetype manually and using --with-freetype instead.

(and older freetype such as 2.9.1 need to be used)

@openjdk openjdk bot added the approval Requires approval; will be removed when approval is received label Oct 29, 2025
@judovana
Copy link
Contributor Author

:38:43.3378937Z FAILED: gc/concurrentMarkSweep/CheckAllocateAndSystemGC.java
2025-10-28T14:38:43.3379819Z FAILED: gc/concurrentMarkSweep/SystemGCOnForegroundCollector.java

Are the failing jtregs. Do not seem to be related though

Am also digging in 32windows time-outs, and can not see culprit. @zzambers any ideas?

@zzambers
Copy link
Contributor

zzambers commented Nov 3, 2025

:38:43.3378937Z FAILED: gc/concurrentMarkSweep/CheckAllocateAndSystemGC.java
2025-10-28T14:38:43.3379819Z FAILED: gc/concurrentMarkSweep/SystemGCOnForegroundCollector.java

Are the failing jtregs. Do not seem to be related though

Am also digging in 32windows time-outs, and can not see culprit. @zzambers any ideas?

There are some unstable tests on x86 (32-bit) and probably unrelated to your PR. Segfault in CheckAllocateAndSystemGC.java seems like JDK-8361833 - known issue.

@zzambers
Copy link
Contributor

zzambers commented Nov 5, 2025

btw. there is also issue with Windows x86 build jobs, where VS2010 installation hangs and jobs get cancelled. I have created PR for that.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

approval Requires approval; will be removed when approval is received backport Port of a pull request already in a different code base rfr Pull request is ready for review

Development

Successfully merging this pull request may close these issues.

2 participants